const Koa = require('koa');
const Router = require('koa-router')
const bodyparser = require('koa-bodyparser')
// const cors = require('koa-cors')
const app = new Koa()
const router = new Router()
const list = [
    {id:1, title: "铁甲小宝"},
    {id:2, title: "韦小宝"},
    {id:3, title: "少年阿宝"},
    {id:4, title: "林动"},
    {id:5, title: "牧尘"},
    {id:6, title: "洛璃"},
    {id:7, title: "萧炎"},
    {id:8, title: "徐凤年"},
]
// nodemon 自动重启服务
// get 获取 post 添加  put 编辑 delete删除

// get query || params
// post  body || params
// put  body || params
// delete  body || params


// query 
// 传  /list?id=1&name=kkk
// 取 ctx.query

// body
// 传 json格式的body
// ctx.request.body

// params
// 传 /list/1/kkk  定义 /list/:id/:name
// 取 ctx.params


// 后端处理跨域 设置cors的 orgin 为前端url 或者  为*
// 设置 响应头里的 Access-Control-Allow-Origin: *
// app.use(cors({
//     origin: "*"
// }))



router.get('/list', async (ctx) => {
    // get没有body => query
    // query /list?id=1&name=2
    // ctx.query => {id:1,name:2}
    // 分页 模糊查询 排序 desc倒叙 
    const {pageIndex=1,pageSize=10,keyword, sortType} = ctx.query;
    console.log(pageIndex,pageSize)
    let newList = [];
    newList = list
                .filter(item=> item.title.includes(keyword||'')) // keyword||'' 因为keyword默认是undefined 无法匹配任何值
                .slice((pageIndex-1)*pageSize, pageIndex*pageSize)// slice前包后不包
                .sort((a,b)=> sortType!=='desc'?a.id-b.id : b.id-a.id)
    
    // 排序
    ctx.body = newList
})
router.post('/list', async (ctx) => {
    // post body
    const {title} = ctx.request.body;
    list.push({
        id: Date.now(),
        title,
    })
    ctx.body='post'
    console.log(ctx.request.body);
})
router.put('/list', async (ctx) => {
    const {id,title} = ctx.request.body;
    let bool = false;
    list.forEach((item,index)=>{
        if(item.id===id){
            bool=true;
            list[index].title= title;
        }
    })
    ctx.body=bool?'编辑成功':'编辑失败'
    
})
router.delete('/list/:id', async (ctx) => {
    const {id} = ctx.params;
    const ind = list.findIndex(item =>item.id ==id)
    list.splice(ind,1)
    ctx.body=ind===-1?'删除失败':'删除成功'
})
//post请求的参数转为json格式返回   koa接收到的post请求参数并不是json格式，我们需要将其转换为json
app.use(bodyparser()) // 必须注册到路由之前
app.use(router.routes())

app.listen(8888,() => {
    console.log('listen to 8888')
})